<?php

/** 格式化关联数据
 * @param $val 当前数据的关联值
 * @param string $model 被关联的模型
 * @param string $field 要取的被关联的模型字段
 * ---------------以下是通过中间表多对多需要的参数
 * @param string $table 中间表
 * @param string $fkey 关联表中当前数据的主键
 * @param string $rkey 关联表中被关联模型的主键
 * ---------------以上是通过中间表多对多需要的参数
 * @return mixed|string
 */
function format_relation($val, $model, $field='title', $table='', $fkey='', $rkey=''){
    //没有关联表，直接取值
    if(!$table) echo format_model_field($val, $model,$field);

    //有关联表，先读取中间关联表，再取值
    $value = '';
    $rlist = M($table)->where(array($fkey=>$val))->select();
    if(!$rlist) echo $value;

    foreach ($rlist as $row){
        $value .= ','.format_model_field($row[$rkey], $model, $field);
    }
    $value = substr($value, 1);
    echo $value;
}

/** 格式化属性关联关系字段
 * @param int $val 值
 * @param string $model 模型
 * @param string $field 字段
 * @return mixed
 */
function format_model_field($val, $model, $field='title'){
    echo D($model)->keyFind($val, $field);
}

/** 格式化指定条件下某对象的字段值
 * @param array $where 条件
 * @param string $model 模型
 * @param string $field 字段
 * @return mixed
 */
function format_model_field2($where, $model, $field='title'){
    echo D($model)->findOne($where, $field);
}

/** 格式化CMS系统中自定义字段的值
 * @param int $fieldId 字段ID
 * @param int $content_id 内容ID
 * @return mixed
 */
function format_cms_value($fieldId, $content_id){
    echo format_model_field2(array('field_id'=>$fieldId,'content_id'=>$content_id), 'Todo/Cms/Values', 'values');
}

/**
 * 格式化数据字典
 * @param string $val 值
 * @param string $dictCode 数据字典代码
 * @return mixed
 */
function format_dict($val, $dictCode){
    echo \Todo\Service\DictService::getInstance()->getDictTitle($dictCode, $val);
}

/**
 * 格式化用户
 * @param int $userId 用户ID
 * @return string
 */
function format_user($userId){
    echo \Todo\Service\UserService::getInstance()->cacheFindUser($userId, 'nickname');
}

/**
 * 格式化用户头像
 * @param int $userId 用户ID
 * @return string
 */
function format_user_photo($userId){
    $photo = \Todo\Service\UserService::getInstance()->cacheFindUser($userId, 'photo');
    if(!$photo || !\Todo\Service\FileService::getInstance()->checkFileExist($photo)){
        echo C('TMPL_PARSE_STRING.__IMG__').'/photo.jpg';
    }else{
        echo C('TMPL_PARSE_STRING.__UPLOAD__').'/'.$photo;
    }
}
/**
 * 格式化系统LOGO
 * @param mixed $logo 文件ID或路径
 * @return string
 */
function format_logo($logo){
    if(!is_string($logo)) $logo = \Todo\Service\FileService::getInstance()->cacheFindFile($logo, 'path');
    if(!$logo || !\Todo\Service\FileService::getInstance()->checkFileExist($logo)){
        echo C('TMPL_PARSE_STRING.__IMG__').'/logo.png';
    }else{
        echo C('TMPL_PARSE_STRING.__FILES__').'/'.$logo;
    }
}

/**
 * 格式化日期
 * @param int $date
 * @param string $format
 * @return bool|string
 */
function format_date($date=0, $format='Y-m-d'){
    if(!$date) echo '';
    else echo date($format, $date);
}

/**
 * 格式化日期和时间
 * @param int $date
 * @param string $format
 * @return bool|string
 */
function format_datetime($date=0, $format='Y-m-d H:i:s'){
    if(!$date) echo '';
    else echo date($format, $date);
}

/**
 * 格式化时间
 * @param int $date
 * @param string $format
 * @return bool|string
 */
function format_time($date=0, $format='H:i:s'){
    if(!$date) $date = NOW_TIME;
    echo date($format, $date);
}

/**
 * 格式化文件
 * @param int $fileId 文件ID
 * @param string $field=path 字段,为空返回整个数组
 * @return mixed
 */
function format_file($fileId, $field='url'){
    if(!$fileId) echo '';
    else echo \Todo\Service\FileService::getInstance()->cacheFindFile($fileId, $field);
}

/**
 * 格式化文件大小
 * @param int $size 文件字节数
 * @return mixed
 */
function format_size($size){
    echo Files::format_bytes($size);
}

/**
 * 格式化日期中的周
 * @param int $date
 */
function format_week($date=0){
    $weeks = array('日','一','二','三','四','五','六');
    if(!$date) $date = NOW_TIME;
    echo $weeks[intval(date('w', $date))];
}
